package com.itheima.mapper;

import com.github.pagehelper.Page;
import com.itheima.pojo.entity.Clazz;
import com.itheima.pojo.query.ClazzQueryParam;
import org.apache.ibatis.annotations.*;

import java.util.List;

/**
 * @author zzw
 * @date 2025/4/23
 * @description 班级管理持久层接口
 */
@Mapper
public interface ClazzMapper {

    /**
     * 查询所有班级
     *
     * @return List<Clazz> 班级列表
     */
    @Select("select * from clazz")
    List<Clazz> list();

    /**
     * 根据id删除班级
     *
     * @param id 班级id
     */
    @Delete("delete from clazz where id=#{id}")
    void delete(Integer id);

    /**
     * 添加班级
     *
     * @param clazz 班级对象
     */
    @Insert("insert into clazz(name, room, begin_date, end_date, master_id, subject, create_time, update_time) " +
            "values" + " (#{name},#{room},#{beginDate},#{endDate},#{masterId},#{subject},#{createTime},#{updateTime})")
    void save(Clazz clazz);

    /**
     * 根据id查询班级
     *
     * @param id 班级id
     * @return Clazz 班级对象
     */
    @Select("select * from clazz where id=#{id}")
    Clazz getById(Integer id);

    /**
     * 更新班级
     *
     * @param clazz 班级对象
     */
    void update(Clazz clazz);

    /**
     * 分页查询班级
     *
     * @param clazzQueryParam 查询参数
     * @return List<Clazz> 班级列表
     */
    Page<Clazz> page(ClazzQueryParam clazzQueryParam);
}
